package com.util;

import org.junit.Test;

import java.util.*;

/**
 * @Description 迭代器(Iterator)主要用来操作java里的集合对象(collection)。
 * @Author away
 * @Version V1.0.0
 * @Since 1.0
 * @Date 2019/3/13
 */
public class IteratorDemo {
    /**
     * Iterator 遍历集合
     */
    @Test
    public void test01() {
        Set<String> sets = new HashSet();
        sets.add("a");
        Iterator<String> temp = sets.iterator();
        while (temp.hasNext()) {
            System.out.println(temp.next());
        }
    }

    /**
     * 使用Iterator remove 删除集合中的元素
     * 具体看arrayList实现
     */
    @Test
    public void test02() {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String item = iterator.next();
            if ("2".equals(item)) {
                iterator.remove();
            }
        }
        System.out.println(list);
        System.out.println("------直接在for each 中删除元素------");
        List<String> list1 = new ArrayList();
        list1.add("1");
        list1.add("2");
        for (String item : list1) {
            if ("2".equals(item)) {//当"2" 抛出异常
                list1.remove(item);
            }
        }
        System.out.println(list1);
    }

    /**
     * 打印迭代器剩余的元素
     */
    @Test
    public void test03(){
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        Iterator<String> iterator = list.iterator();
        String item1 = iterator.next();
        String item2 = iterator.next();
        System.out.println("剩余的元素");
        iterator.forEachRemaining(s->System.out.println(s));

    }


}

